The present application relates generally to an improved data processing system and method. More specifically, the present application is directed to a system and method for temporary pipeline marking for processor error workarounds.
In modern processor design, especially in an out-of-order processor design, design flaws in a pipeline can result in control state information living beyond the instruction for which it is intended, resulting in incorrect processing of the next instruction in that pipeline. Hung state information (as this form of design error refers to) is one of the most difficult problems to find and solve during a design phase, and are often not found until later when the design is implemented in hardware.
As another example, one or more state values used by a state machine that manages a pipeline in a processor can have a hung or stuck state value if the pipeline is at least partially cleared by a pipeline flush or an instruction rescind. In the processor, conditions can occur which require instructions currently executing in execution unit hardware of the processor to be flushed. For example, branches, load operations that miss the cache, exceptions, and the like can result in a pipeline flush. When instructions are flushed, state machines and control sequencers may need to be reset for the next operation to be executed successfully.
Failure to properly flush state from the control hardware of an execution unit is a source of design errors in processor designs, particularly for cases where complex instructions iteratively run for many cycles in the execution hardware (divide operations, for example). If a design error that results in an incomplete state reset for a particular instruction or instruction type is caught early in the design process, the design can be fixed without substantial penalty. However, if the design error is not detected until late in the design process, developing a workaround can be difficult.